package com.tencent.sr.iris.activity.interfaces.client.task;

import com.tencent.sr.iris.activity.interfaces.request.group.AdvisorGroupTaskRequest;
import com.tencent.sr.iris.activity.interfaces.request.operate.OperateBoardRequest;
import com.tencent.sr.iris.activity.interfaces.request.operate.OperateBoardStatisticsRequest;
import com.tencent.sr.iris.activity.interfaces.request.operate.OperateBoardThirdRequest;
import com.tencent.sr.iris.activity.interfaces.request.operate.SpecialStageListsRequest;
import com.tencent.sr.iris.activity.interfaces.request.operate.UnJoinTaskRequest;
import com.tencent.sr.iris.activity.interfaces.response.group.AdvisorBoardResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.GroupTaskPaginationResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateBoardCommissionResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateBoardFirstOrderResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateBoardInviteResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateBoardSprintResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateBoardStatisticsResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateSecondBoardResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateThirdBoardResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.SpecialStageListsResponse;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.UnJoinTaskResponse;
import com.tencent.sr.rmall.common.primitive.HttpResult;
import com.tencent.sr.rmall.common.request.PaginationRequest;
import com.tencent.sr.rmall.common.response.PaginationResponse;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

@FeignClient(name = "iris-activity-core-service", contextId = "IrisOperateBoardClient",
        path = "/api/v1/iris/iris-activity-core-service/task/operate")
public interface IrisOperateBoardClient {

    @PostMapping("/queryOperateBoardInvite")
    @ApiOperation(value = "运营平台-邀新有礼")
    HttpResult<PaginationResponse<OperateBoardInviteResponse>> queryOperateBoardInvite(
            @RequestBody @Validated PaginationRequest<OperateBoardRequest> request);


    @PostMapping("/queryOperateBoardSprint")
    @ApiOperation(value = "运营平台-冲刺赛")
    HttpResult<PaginationResponse<OperateBoardSprintResponse>> queryOperateBoardSprint(
            @RequestBody @Validated PaginationRequest<OperateBoardRequest> request);

    @PostMapping("/queryOperateBoardCommission")
    @ApiOperation(value = "运营平台-佣金回滚")
    HttpResult<PaginationResponse<OperateBoardCommissionResponse>> queryOperateBoardCommission(
            @RequestBody @Validated PaginationRequest<OperateBoardRequest> request);

    @PostMapping("/queryOperateFirstOrder")
    @ApiOperation(value = "运营平台-粉丝首单任务")
    HttpResult<PaginationResponse<OperateBoardFirstOrderResponse>> queryOperateFirstOrder(
            @RequestBody @Validated PaginationRequest<OperateBoardRequest> request);

    @PostMapping("/queryOperateBoard")
    @ApiOperation(value = "运营平台-一级页面")
    HttpResult<PaginationResponse<AdvisorBoardResponse>> queryOperateBoard(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskRequest> request);

    @PostMapping("/queryOperateSecondBoard")
    @ApiOperation(value = "运营平台-二级页面")
    HttpResult<GroupTaskPaginationResponse<OperateSecondBoardResponse>> queryOperateSecondBoard(
            @RequestBody @Validated PaginationRequest<OperateBoardRequest> request);

    @PostMapping("/queryOperateThirdBoard")
    @ApiOperation(value = "运营平台-三级页面")
    HttpResult<PaginationResponse<OperateThirdBoardResponse>> queryOperateThirdBoard(
            @RequestBody @Validated PaginationRequest<OperateBoardThirdRequest> request);

    @PostMapping("/listUnJoinTaskLeader")
    @ApiOperation(value = "查询未报名团长")
    HttpResult<PaginationResponse<UnJoinTaskResponse>> listUnJoinTaskLeader(
            @RequestBody @Validated PaginationRequest<UnJoinTaskRequest> request);

    @PostMapping("operateBoardStatistics")
    @ApiOperation(value = "运营一级统计")
    HttpResult<OperateBoardStatisticsResponse> operateBoardStatistics(
            @RequestBody @Validated OperateBoardStatisticsRequest request);

    @PostMapping("taskGroupSpecialStageLists")
    @ApiOperation(value = "查询特邀阶段")
    HttpResult<List<SpecialStageListsResponse>> taskGroupSpecialStageLists(
            @RequestBody @Validated SpecialStageListsRequest request);
}
